home *** CD-ROM | disk | FTP | other *** search
/ Thinkin' Science - 1st & 2nd Grades / Thinkin' Science - First and Second Grades (Edmark)(Version 1.0)(1997).ISO / pc / dearpar / dpdata / dp.dir / 00068_Script_68 < prev    next >
Text File  |  1997-09-03  |  10KB  |  328 lines

  1. ------------------------------------------------------
  2. ------------------- MAIN MOVIE SCRIPT --------------------
  3.  
  4. --This file was coded by Paul Katz using existing code supplied by Edmark.
  5. --Date of this project:  August 21-25, 1997
  6.  
  7. --Paul Katz can be contacted via e-mail at:  paulkatz@mindspring.com
  8.  
  9. --Home telephone:  206.320.1263
  10.  
  11. --Web address:  http://www.mindspring.com/~paulkatz
  12.  
  13. --Notes:  Most of the code within this file is my own.  I have used similar routines to those I found in the earlier code, but have used different variable/handler names.  I took the "doSmackerVideo" handler directly from pre-existing code and made no significant changes.  A major difference between this file and earlier files is my use of cast member names to define the global variable gWhere, which is also the Frame Label Name of the appropriate video playback frame when a button has been clicked.  There are pop-up labels on the icon buttons which reside in channels 20 levels higher than their counterpart icon buttons.  A "buttonClick" handler deals with sorting out whether or not the user has clicked on the icon button or it's associated label, carries out the button click routine and sends the playback head to the appropriate video playback frame label.
  14.  
  15. -- Components/Xtras:  Smacker Xtra  Version 3.0 by RAD Game Tools
  16. ------------------------------------------------------
  17. ------------------------------------------------------
  18.  
  19.  
  20. on ChangeColordepth
  21.   
  22.   global gBitDepthFlag, gBitDepth
  23.   
  24.   
  25.   -- If this is a Mac,  then make sure the bitdepth is 8bit.  Transparent backgrounds
  26.   --  will disapeer
  27.   
  28.   if the machineType <> 256 then
  29.     
  30.     -- Remember the depth, for setting back on quit.
  31.     set gBitDepth to  the colorDepth
  32.     
  33.     -- Set the current display is not 8bit then set to 8bit
  34.     if the colordepth <> 8 then
  35.       set the colordepth to 8
  36.       if the colorDepth = 8  then
  37.         set gBitDepthFlag = TRUE
  38.       else
  39.         set gBitDepthFlag = FALSE
  40.         alert "Please change your system to 256 colors and reboot."
  41.       end if  
  42.     end if
  43.   end if
  44.   
  45. end ChangeColordepth
  46.  
  47. ------------------------
  48.  
  49.  
  50. on startMovie
  51.   global gLabelList, gMovie_Path, gReadingClicked, gTestQuit
  52.   
  53.   set gLabelList = ["dp_2":5,"dp_3":6,"dp_4":7,"dp_5":8,"dp_6":9,"dp_7":10,"dp_8":11,"dp_9":12,"dp_10":13,"dp_11":14]
  54.   
  55.   set gMovie_Path = (the moviePath)
  56.   
  57.   -- center the stage and set the mouse scripts
  58.   set the centerStage to TRUE
  59.   ChangeColordepth
  60.   set the stageColor = 255
  61.   
  62.   set gReadingClicked = FALSE
  63.   
  64.   set gTestQuit = FALSE
  65.   
  66.   set the visible of sprite 15 to TRUE
  67.   
  68.   set the keyDownScript = "_testQuit"
  69.   
  70.   -- clearLabels
  71.   
  72.   setVisible 15,15, TRUE
  73.   setVisible 16, 21, FALSE
  74.   
  75.   initSmacker
  76.   
  77. end
  78.  
  79. on clearLabels
  80.   --  the following makes all icon button labels hidden.
  81.   
  82.   repeat with i = 25 to 34
  83.     set the visible of sprite i to FALSE
  84.   end repeat
  85. end
  86.  
  87. on setVisible first, last, state
  88.   repeat with i = first to last
  89.     set the visible of sprite i to state
  90.   end repeat
  91. end
  92.  
  93. on buttonClick
  94.   global gWhere, gLabelList, gwhichSprite
  95.   if the clickOn = 0 then
  96.     exit
  97.   end if
  98.  
  99.   set the mouseDownScript to empty
  100.   set the mouseUpScript to empty
  101.   set baseName = the name of the member of sprite the clickOn
  102.   
  103.   set baseName = char 1 to (length(baseName) - 2) of baseName
  104.   
  105.   set gWhichSprite = the clickOn
  106.   
  107.   -- not needed for 
  108.   --  if the clickOn > 22 then
  109.   --    
  110.   --    set gWhichSprite = getAProp(gLabelList,baseName)
  111.   --    
  112.   --  end if
  113.   
  114.   set gWhere = baseName
  115.   
  116.   if the clickOn = 3 then
  117.     puppetSound "Snap Shot"
  118.   else
  119.     puppetSound "button sound"
  120.   end if
  121.   
  122.   set the memberNum of sprite gWhichSprite to the number of member (baseName &"_D")
  123.   updateStage
  124.   
  125.   repeat while the StillDown = TRUE
  126.     if rollOver(the clickOn) = TRUE then
  127.       set the memberNum of sprite gWhichSprite to the number of member (baseName &"_D")
  128.       updateStage
  129.     else
  130.       set the memberNum of sprite gWhichSprite to the number of member (baseName &"_U")
  131.       updateStage
  132.     end if
  133.   end repeat
  134.   set the memberNum of sprite gWhichSprite to the number of member (baseName &"_U")
  135.   updatestage
  136.   
  137.   if rollOver(the clickOn) = TRUE then
  138.     
  139.     set the memberNum of sprite gWhichSprite to the number of member (baseName&"_S")
  140.     updateStage
  141.     -- set the mouseUpScript to "lockmouseUpScript"
  142.     -- set the mouseDownScript to "lockmouseDownScript"
  143.     if gWhere = "dp_1" then 
  144.       go to frame "dp_1"
  145.     else if gWhere = "stop" then
  146.       go to frame "stop"
  147.     else
  148.       set the mouseUpScript to "lockmouseUpScript"
  149.       set the mouseDownScript to "lockmouseDownScript"
  150.       go to frame "Play Video"
  151.     end if
  152.   end if
  153. end
  154.  
  155. on lockmouseUpScript
  156.   stopEvent
  157. end
  158.  
  159. on lockmouseDownScript
  160.   stopEvent
  161. end
  162.  
  163. on setPuppets first, last, state  
  164.   repeat with i = first to last
  165.     puppetSprite i, state
  166.   end repeat
  167. end
  168.  
  169. -- Function for playing all smacker videos and closing them 
  170. on DoSmackerVideo
  171.   
  172.   global gSmkObject, gMovie_Path, gWhere, gwhichSprite
  173.   
  174.   -- Play the smacker movie with one sound track and no preload.
  175.   SmackOpen(gSmkObject,gMovie_Path &(gWhere)&".smk", 1, 0 ) 
  176.   
  177.   -- Get the total number of frames
  178.   set gLastFrame = SmackGetFrames(gSmkObject)
  179.   
  180.   -- Make sure the movie stops if a "q", escape key, left or right
  181.   -- mouse button, or loss of focus (this app is no longer up front), then stop movie
  182.   SmackSetInterfaceKeys(gSmkObject, "q\e\m\r\f")
  183.   
  184.   
  185.   -- The macintosh version plays smacker video off to the right by 2 pixals from the Windows version
  186.   -- and plays better if Smacker is made to play a frame at a time.  So do framebyframe play for the Mac
  187.   -- and play the whole movie at once for Windows and ajust for 2 pixals.
  188.   
  189.   -- If we are on a windows machine...
  190.   if the machineType = 256 then
  191.     -- set position for reading
  192.     -- test for windows remap
  193.     SmackRemapToSystemPalette(gSmkObject)
  194.     -- set position for reading
  195.     case gWhere of
  196.       "dp_0","dp_12": SmackSetPosition(gSmkObject,203,132)
  197.       Otherwise SmackSetPosition(gSmkObject,172,110)
  198.     end case
  199.     -- Play entire movie (it will autmatically break to interface keys & mouse events set earlier)
  200.     SmackPlay(gSmkObject)
  201.     
  202.   else
  203.     -- Make sure the palette remaps (The Macintosh Smacker Xtra will not use its own palette correctly so
  204.     -- Have it remap to the current palette)
  205.     SmackRemapToSystemPalette(gSmkObject)
  206.     
  207.     -- set position for reading
  208.     case gWhere of
  209.       "dp_0","dp_12": SmackSetPosition(gSmkObject,203,132)
  210.       Otherwise SmackSetPosition(gSmkObject,172,110)
  211.     end case
  212.     
  213.     -- Loop through every frame in the movie
  214.     repeat with nFrame = 1 to gLastFrame
  215.       SmackPlayFrames( gSmkObject, nFrame, nFrame )
  216.       -- If there was a mouse or key event stop playing
  217.       if (SmackGetLastKey(gSmkObject)) <> ""  then exit repeat
  218.     end repeat
  219.     
  220.   end if
  221.   
  222.   
  223.   -- Movie is now finished, close it so we get the sound channels back
  224.   SmackClose(gSmkObject)
  225.   
  226.   if gWhere <> "dp_0" then
  227.     set the memberNum of sprite gWhichSprite = the number of member (gWhere &"_U")
  228.   end if
  229.   updateStage
  230.   
  231.   -- Get the last event if there were any
  232.   set sLastEvent = SmackGetLastKey(gSmkObject)
  233.   
  234.   -- If a mouse click or key stopped the movie then do mouseDown script for resetting.
  235.   if (sLastEvent = "Q") or (sLastEvent = "\e") or (sLastEvent = "\m")¨
  236.  or (sLastEvent = "\r") or (sLastEvent = "\f") then
  237.     
  238.     movieDoneCleanUp
  239.     exit
  240.     
  241.   end if
  242.   
  243.   
  244. end DoSmackerVideo
  245.  
  246. on initSmacker
  247.   global gSmkObject
  248.   
  249.   -- Set paths for the appropriate smacker xtras
  250.   if the platform = "Windows,16" then
  251.     
  252.     -- Load Smacker Xtra for 16bit windows (win 3.11)
  253.     OpenXLib (the moviePath)& "smackx16"
  254.     
  255.   else if the platform = "Windows,32" then
  256.     
  257.     -- Load Smacker Xtra for 32bit windows (win95)
  258.     OpenXLib (the moviePath) & "smackx32"
  259.     
  260.   else
  261.     
  262.     -- Load Smacker Xtra for any Macintosh
  263.     OpenXLib (the moviePath) & "Smack Fat"
  264.     
  265.   end if
  266.   
  267.   -- Make a smacker controller object
  268.   set gSmkObject=new(xtra "smacker")
  269.   
  270. end initSmacker
  271.  
  272. on _TestQuit
  273.   global gTestQuit
  274.   if (the key = "q") and (the commandDown) then 
  275.     
  276.     -- If command & q was hit more than once then just get out
  277.     if gTestQuit = True then Quit
  278.     
  279.     set gTestQuit = TRUE
  280.     
  281.     -- Set the cursor to a watch
  282.     cursor 4
  283.     go to frame "Stop"
  284.   end if
  285. end _TestQuit
  286.  
  287. on MovieStop_MouseDown
  288.   --  global gWhichSprite, gWhere
  289.   --  
  290.   --  -- Make sure events don't build up
  291.   --  set the MouseDownScript = EMPTY
  292.   --  set the MouseUpScript = EMPTY
  293.   --  
  294.   --  updatestage
  295.   --  
  296.   --  set gAutoplay = FALSE
  297.   --  
  298.   --  -- If the mouse did not click on an active button exit
  299.   --  
  300.   --  repeat with i = 4 to 21
  301.   --    
  302.   --    if the clickOn <> i then 
  303.   --      movieDoneCleanUp
  304.   --      dontPassEvent
  305.   --      abort
  306.   --    end if
  307.   --  end repeat
  308.   --  
  309.   --  pass
  310. end MovieStop_MouseDown
  311.  
  312. on movieDoneCleanUp
  313.   
  314.   --      global gwhichSprite, gWhere
  315.   --      
  316.   --      set the memberNum of sprite gWhichSprite = the number of member (gWhere &"_U")
  317.   --      updateStage
  318.   
  319. end
  320.  
  321.  
  322. on QuitMovie
  323.   -- Clean up Smacker objects before quiting
  324.   global gSmkObject
  325.   
  326.   smackClose gSmkObject
  327.   
  328. end QuitMovie